home *** CD-ROM | disk | FTP | other *** search
/ PC Media 22 / PC MEDIA CD22.iso / share / prog / spm220e / converta.asm < prev    next >
Assembly Source File  |  1995-10-09  |  4KB  |  115 lines

  1. ;╔════════════════════════════════════════════════════════════════════════════╗
  2. ;║ NAME         : CONVERTA.ASM: CONVASC and CONVHEX routines.                 ║
  3. ;║ VERSION      : v 1.0                                                       ║
  4. ;║ FILE TYPE    : COMmand file type (Use the EXE2BIN.COM DOS utilite).        ║
  5. ;║ FUNCTION     : Shows how to use the ASCII <--> HEXA transcoding routines   ║
  6. ;║              : from the assembler language.                                ║
  7. ;║              : Their main goal is to permit to a SERIAL PORTS MANAGER app. ║
  8. ;║              : using the Xon/Xoff protocol to transmit binary informations ║
  9. ;║              : without any interferences with the soft hand-shaking...     ║
  10. ;║              : ATTENTION: Each binary code is associated to 2 ASCII codes. ║
  11. ;║              : Therefore, the efficiency of an ASCII transmission is less  ║
  12. ;║              : than for a binary transmission ! ONLY USE THESE PROCEDURES  ║
  13. ;║              : IF YOU CAN NOT DO OTHERWISE...                              ║
  14. ;║ SYNTAX       : CONVERTA                                                    ║
  15. ;║ COPYRIGHT    : HETRU Fabrice 1991.                                         ║
  16. ;╚════════════════════════════════════════════════════════════════════════════╝
  17.  
  18.  
  19.  
  20. name        CONVERTA
  21. title       Programm using the ASCII <--> HEXA transcoding procedures.
  22. page        60,80
  23.  
  24.  
  25.  
  26. if1
  27. %out █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
  28. %out █   TRANSCODING PROCEDURES ARE BEEING ASSEMBLED  █
  29. %out ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  30. endif
  31.  
  32.  
  33.  
  34. code     segment
  35.          assume cs:code,ds:code
  36.          org    100h
  37.  
  38. start:   jmp     main
  39.  
  40. hello    db   "CONVERTA: A demostration of the HEXA <--> ASCII trancoding."
  41.          db   0dh,0ah
  42.          db   "            (Press 'Esc' to end this program).",0dh,0ah,'$'
  43. get      db   0dh,0ah,'Character: $'
  44. car0     db   ?,' --CONVASC-->'
  45. car1     db   ?,?,' --CONVHEX-->'
  46. car2     db   ?,'$'
  47. byebye   db   0dh,0ah,"CONVERTA has ended --- (C)HETRU Fabrice.",0dh,0ah,'$'
  48.  
  49. main     proc   near
  50.          mov    dx,offset hello
  51.          mov    ah,9
  52.          int    21h
  53.          next:
  54.          mov    dx,offset get
  55.          mov    ah,9
  56.          int    21h
  57.          mov    ah,0
  58.          int    16h
  59.          push   ax
  60.          mov    car0,al
  61.          cmp    al,0dh
  62.          jne    car_ok
  63.          mov    car0,' '
  64.          car_ok:
  65.          mov    di,offset car1 ;Destination
  66.          call   convasc
  67.          mov    di,offset car1 ;Source
  68.          call   convhex
  69.          mov    car2,al
  70.          mov    dx,offset car0
  71.          mov    ah,9
  72.          int    21h
  73.          pop    ax
  74.          cmp    al,1bh
  75.          jne    next
  76.          ;End of the program.
  77.          mov    dx,offset byebye
  78.          mov    ah,9
  79.          int    21h
  80.          mov    ax,4c00h
  81.          int    21h
  82. main     endp
  83.  
  84. convasc  proc   near
  85. ;Converte the hexa. byte in AL into 2 ASCII bytes (stored into [DI] string).
  86.          mov    ah,al
  87.          mov    cl,4
  88.          shr    ah,cl
  89.          add    ah,30h
  90.          inc    di
  91.          mov    [di],ah
  92.          dec    di
  93.          and    al,0fh
  94.          add    al,30h
  95.          mov    [di],al
  96.          ret
  97. convasc  endp
  98.  
  99. convhex  proc   near
  100. ;Return 1 HEXA byte (in AL) from 2 given ASCII bytes.
  101.          inc    di
  102.          mov    al,[di]
  103.          dec    di
  104.          sub    al,30h
  105.          mov    cl,4
  106.          shl    al,cl
  107.          mov    ah,[di]
  108.          sub    ah,30h
  109.          add    al,ah
  110.          ret
  111. convhex  endp
  112.  
  113. code     ends
  114.          end    start
  115.